home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / forms.int < prev    next >
Encoding:
Text File  |  1998-02-09  |  18.6 KB  |  572 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1995,98 Borland International     }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit Forms;
  11.  
  12. {$P+,S-,W-,R-}
  13. {$C PRELOAD}
  14.  
  15. interface
  16.  
  17. uses Messages, Windows, SysUtils, Classes, Graphics, Menus, Controls, Imm;
  18.  
  19. type
  20.  
  21. { Forward declarations }
  22.  
  23.   TScrollingWinControl = class;
  24.   TCustomForm = class;
  25.   TForm = class;
  26.  
  27. { TControlScrollBar }
  28.  
  29.   TScrollBarKind = (sbHorizontal, sbVertical);
  30.   TScrollBarInc = 1..32767;
  31.  
  32.   TControlScrollBar = class(TPersistent)
  33.   public
  34.     procedure Assign(Source: TPersistent); override;
  35.     property Kind: TScrollBarKind;
  36.     property ScrollPos: Integer;
  37.   published
  38.     property Margin: Word default 0;
  39.     property Increment: TScrollBarInc default 8;
  40.     property Range: Integer default 0;
  41.     property Position: Integer default 0;
  42.     property Tracking: Boolean default False;
  43.     property Visible: Boolean default True;
  44.   end;
  45.  
  46. { TScrollingWinControl }
  47.  
  48.   TScrollingWinControl = class(TWinControl)
  49.   protected
  50.     procedure AutoScrollInView(AControl: TControl);
  51.     procedure ChangeScale(M, D: Integer); override;
  52.     procedure CreateParams(var Params: TCreateParams); override;
  53.     procedure CreateWnd; override;
  54.     procedure AlignControls(AControl: TControl; var ARect: TRect); override;
  55.     property AutoScroll: Boolean default True;
  56.   public
  57.     constructor Create(AOwner: TComponent); override;
  58.     destructor Destroy; override;
  59.     procedure DisableAutoRange;
  60.     procedure EnableAutoRange;
  61.     procedure ScrollInView(AControl: TControl);
  62.   published
  63.     property HorzScrollBar: TControlScrollBar;
  64.     property VertScrollBar: TControlScrollBar;
  65.   end;
  66.  
  67. { TScrollBox }
  68.  
  69.   TFormBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow,
  70.     bsSizeToolWin);
  71.   TBorderStyle = bsNone..bsSingle;
  72.  
  73.   TScrollBox = class(TScrollingWinControl)
  74.   protected
  75.     procedure CreateParams(var Params: TCreateParams); override;
  76.     procedure Resize; dynamic;
  77.   public
  78.     constructor Create(AOwner: TComponent); override;
  79.   published
  80.     property Align;
  81.     property AutoScroll;
  82.     property BorderStyle: TBorderStyle default bsSingle;
  83.     property DragCursor;
  84.     property DragMode;
  85.     property Enabled;
  86.     property Color nodefault;
  87.     property Ctl3D;
  88.     property Font;
  89.     property ParentColor;
  90.     property ParentCtl3D;
  91.     property ParentFont;
  92.     property ParentShowHint;
  93.     property PopupMenu;
  94.     property ShowHint;
  95.     property TabOrder;
  96.     property TabStop;
  97.     property Visible;
  98.     property OnClick;
  99.     property OnDblClick;
  100.     property OnDragDrop;
  101.     property OnDragOver;
  102.     property OnEndDrag;
  103.     property OnEnter;
  104.     property OnExit;
  105.     property OnMouseDown;
  106.     property OnMouseMove;
  107.     property OnMouseUp;
  108.     property OnResize: TNotifyEvent;
  109.   end;
  110.  
  111. { TDesigner }
  112.  
  113.   TDesigner = class(TObject)
  114.   public
  115.     function IsDesignMsg(Sender: TControl; var Message: TMessage): Boolean;
  116.       virtual; abstract;
  117.     procedure Modified; virtual; abstract;
  118.     procedure Notification(AComponent: TComponent;
  119.       Operation: TOperation); virtual; abstract;
  120.     procedure PaintGrid; virtual; abstract;
  121.     procedure ValidateRename(AComponent: TComponent;
  122.       const CurName, NewName: string); virtual; abstract;
  123.     property IsControl: Boolean;
  124.     property Form: TCustomForm;
  125.   end;
  126.  
  127. { IOleForm }
  128.  
  129.   IOleForm = interface
  130.     ['{CD02E1C1-52DA-11D0-9EA6-0020AF3D82DA}']
  131.     procedure OnDestroy;
  132.     procedure OnResize;
  133.   end;
  134.  
  135. { TCustomForm }
  136.  
  137.   TWindowState = (wsNormal, wsMinimized, wsMaximized);
  138.   TFormStyle = (fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop);
  139.   TBorderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp);
  140.   TBorderIcons = set of TBorderIcon;
  141.   TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly,
  142.     poScreenCenter);
  143.   TPrintScale = (poNone, poProportional, poPrintToFit);
  144.   TShowAction = (saIgnore, saRestore, saMinimize, saMaximize);
  145.   TTileMode = (tbHorizontal, tbVertical);
  146.   TModalResult = Low(Integer)..High(Integer);
  147.   TCloseAction = (caNone, caHide, caFree, caMinimize);
  148.   TCloseEvent = procedure(Sender: TObject; var Action: TCloseAction) of object;
  149.   TCloseQueryEvent = procedure(Sender: TObject;
  150.     var CanClose: Boolean) of object;
  151.   TFormState = set of (fsCreating, fsVisible, fsShowing, fsModal,
  152.     fsCreatedMDIChild);
  153.  
  154.   TCustomForm = class(TScrollingWinControl)
  155.   protected
  156.     procedure Activate; dynamic;
  157.     procedure ActiveChanged; dynamic;
  158.     procedure ChangeScale(M, D: Integer); override;
  159.     procedure CreateParams(var Params: TCreateParams); override;
  160.     procedure CreateWindowHandle(const Params: TCreateParams); override;
  161.     procedure CreateWnd; override;
  162.     procedure Deactivate; dynamic;
  163.     procedure DefaultHandler(var Message); override;
  164.     procedure DefineProperties(Filer: TFiler); override;
  165.     procedure DestroyWindowHandle; override;
  166.     procedure DoHide; dynamic;
  167.     procedure DoShow; dynamic;
  168.     function GetClientRect: TRect; override;
  169.     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
  170.     procedure Loaded; override;
  171.     procedure Notification(AComponent: TComponent;
  172.       Operation: TOperation); override;
  173.     procedure Paint; dynamic;
  174.     procedure PaintWindow(DC: HDC); override;
  175.     function PaletteChanged(Foreground: Boolean): Boolean; override;
  176.     procedure SetChildOrder(Child: TComponent; Order: Integer); override;
  177.     procedure ReadState(Reader: TReader); override;
  178.     procedure Resize; dynamic;
  179.     procedure SetParent(AParent: TWinControl); override;
  180.     procedure ValidateRename(AComponent: TComponent;
  181.       const CurName, NewName: string); override;
  182.     procedure VisibleChanging; override;
  183.     procedure WndProc(var Message: TMessage); override;
  184.     procedure AfterConstruction; override;
  185.     procedure BeforeDestruction; override;
  186.     property ActiveMDIChild: TForm;
  187.     property BorderIcons: TBorderIcons default [biSystemMenu, biMinimize, biMaximize];
  188.     property BorderStyle: TFormBorderStyle default bsSizeable;
  189.     property AutoScroll stored IsAutoScrollStored;
  190.     property ClientHandle: HWND;
  191.     property ClientHeight write SetClientHeight stored IsClientSizeStored;
  192.     property ClientWidth write SetClientWidth stored IsClientSizeStored;
  193.     property Ctl3D default True;
  194.     property FormStyle: TFormStyle default fsNormal;
  195.     property Height stored IsFormSizeStored;
  196.     property HorzScrollBar stored IsForm;
  197.     property Icon: TIcon;
  198.     property MDIChildCount: Integer;
  199.     property MDIChildren[I: Integer]: TForm;
  200.     property ObjectMenuItem: TMenuItem;
  201.     property PixelsPerInch: Integer;
  202.     property ParentFont default False;
  203.     property PopupMenu stored IsForm;
  204.     property Position: TPosition default poDesigned;
  205.     property PrintScale: TPrintScale default poProportional;
  206.     property Scaled: Boolean default True;
  207.     property TileMode: TTileMode default tbHorizontal;
  208.     property VertScrollBar stored IsForm;
  209.     property Visible write SetVisible default False;
  210.     property Width stored IsFormSizeStored;
  211.     property WindowMenu: TMenuItem;
  212.     property OnActivate: TNotifyEvent;
  213.     property OnClick stored IsForm;
  214.     property OnClose: TCloseEvent;
  215.     property OnCloseQuery: TCloseQueryEvent;
  216.     property OnCreate: TNotifyEvent;
  217.     property OnDblClick stored IsForm;
  218.     property OnDestroy: TNotifyEvent;
  219.     property OnDeactivate: TNotifyEvent;
  220.     property OnDragDrop stored IsForm;
  221.     property OnDragOver stored IsForm;
  222.     property OnHelp: THelpEvent;
  223.     property OnHide: TNotifyEvent;
  224.     property OnKeyDown stored IsForm;
  225.     property OnKeyPress stored IsForm;
  226.     property OnKeyUp stored IsForm;
  227.     property OnMouseDown stored IsForm;
  228.     property OnMouseMove stored IsForm;
  229.     property OnMouseUp stored IsForm;
  230.     property OnPaint: TNotifyEvent;
  231.     property OnResize: TNotifyEvent;
  232.     property OnShow: TNotifyEvent;
  233.   public
  234.     constructor Create(AOwner: TComponent); override;
  235.     constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0);
  236.     destructor Destroy; override;
  237.     procedure Close;
  238.     function CloseQuery: Boolean;
  239.     procedure DefocusControl(Control: TWinControl; Removing: Boolean);
  240.     procedure FocusControl(Control: TWinControl);
  241.     function GetFormImage: TBitmap;
  242.     procedure Hide;
  243.     procedure Print;
  244.     procedure Release;
  245.     procedure SendCancelMode(Sender: TControl);
  246.     procedure SetFocus; override;
  247.     function SetFocusedControl(Control: TWinControl): Boolean;
  248.     procedure Show;
  249.     function ShowModal: Integer;
  250.     function WantChildKey(Child: TControl; var Message: TMessage): Boolean; virtual;
  251.     property Active: Boolean;
  252.     property ActiveControl: TWinControl;
  253.     property ActiveOleControl: TWinControl;
  254.     property Canvas: TCanvas;
  255.     property Caption stored IsForm;
  256.     property Color stored IsColorStored;
  257.     property Designer: TDesigner;
  258.     property DropTarget: Boolean;
  259.     property Font;
  260.     property HelpFile: string;
  261.     property KeyPreview: Boolean default False;
  262.     property Menu: TMainMenu;
  263.     property ModalResult: TModalResult;
  264.     property OleFormObject: IOleForm;
  265.     property WindowState: TWindowState default wsNormal;
  266.   end;
  267.  
  268.   { TCustomActiveForm }
  269.  
  270.   TActiveFormBorderStyle = (afbNone, afbSingle, afbSunken, afbRaised);
  271.  
  272.   TCustomActiveForm = class(TCustomForm)
  273.   protected
  274.     procedure CreateParams(var Params: TCreateParams); override;
  275.   public
  276.     constructor Create(AOwner: TComponent); override;
  277.     function WantChildKey(Child: TControl; var Message: TMessage): Boolean; override;
  278.     property Visible;
  279.   published
  280.     property ActiveControl;
  281.     property AutoScroll;
  282.     property AxBorderStyle: TActiveFormBorderStyle default afbSingle;
  283.     property Caption stored True;
  284.     property Color;
  285.     property Font;
  286.     property Height stored True;
  287.     property HorzScrollBar;
  288.     property KeyPreview;
  289.     property PixelsPerInch;
  290.     property PopupMenu;
  291.     property PrintScale;
  292.     property Scaled;
  293.     property ShowHint;
  294.     property VertScrollBar;
  295.     property Width stored True;
  296.     property OnActivate;
  297.     property OnClick;
  298.     property OnCreate;
  299.     property OnDblClick;
  300.     property OnDestroy;
  301.     property OnDeactivate;
  302.     property OnDragDrop;
  303.     property OnDragOver;
  304.     property OnKeyDown;
  305.     property OnKeyPress;
  306.     property OnKeyUp;
  307.     property OnMouseDown;
  308.     property OnMouseMove;
  309.     property OnMouseUp;
  310.     property OnPaint;
  311.   end;
  312.  
  313. { TForm }
  314.  
  315.   TForm = class(TCustomForm)
  316.   public
  317.     procedure ArrangeIcons;
  318.     procedure Cascade;
  319.     procedure Next;
  320.     procedure Previous;
  321.     procedure Tile;
  322.     property ActiveMDIChild;
  323.     property ClientHandle;
  324.     property MDIChildCount;
  325.     property MDIChildren;
  326.     property TileMode;
  327.   published
  328.     property ActiveControl;
  329.     property BorderIcons;
  330.     property BorderStyle;
  331.     property AutoScroll;
  332.     property Caption;
  333.     property ClientHeight;
  334.     property ClientWidth;
  335.     property Ctl3D;
  336.     property Color;
  337.     property Enabled;
  338.     property ParentFont default False;
  339.     property Font;
  340.     property FormStyle;
  341.     property Height;
  342.     property HelpFile;
  343.     property HorzScrollBar;
  344.     property Icon;
  345.     property KeyPreview;
  346.     property Menu;
  347.     property ObjectMenuItem;
  348.     property PixelsPerInch;
  349.     property PopupMenu;
  350.     property Position;
  351.     property PrintScale;
  352.     property Scaled;
  353.     property ShowHint;
  354.     property VertScrollBar;
  355.     property Visible;
  356.     property Width;
  357.     property WindowState;
  358.     property WindowMenu;
  359.     property OnActivate;
  360.     property OnClick;
  361.     property OnClose;
  362.     property OnCloseQuery;
  363.     property OnCreate;
  364.     property OnDblClick;
  365.     property OnDestroy;
  366.     property OnDeactivate;
  367.     property OnDragDrop;
  368.     property OnDragOver;
  369.     property OnHide;
  370.     property OnHelp;
  371.     property OnKeyDown;
  372.     property OnKeyPress;
  373.     property OnKeyUp;
  374.     property OnMouseDown;
  375.     property OnMouseMove;
  376.     property OnMouseUp;
  377.     property OnPaint;
  378.     property OnResize;
  379.     property OnShow;
  380.   end;
  381.  
  382.   TFormClass = class of TForm;
  383.  
  384. { TDataModule }
  385.  
  386.   TDataModule = class(TComponent)
  387.   protected
  388.     procedure DefineProperties(Filer: TFiler); override;
  389.     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
  390.     function GetProviderNames: OleVariant; safecall;
  391.     class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
  392.     procedure AfterConstruction; override;
  393.     procedure BeforeDestruction; override;
  394.   public
  395.     constructor Create(AOwner: TComponent); override;
  396.     constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0);
  397.     destructor Destroy; override;
  398.     property DesignOffset: TPoint;
  399.     property DesignSize: TPoint;
  400.   published
  401.     property OnCreate: TNotifyEvent;
  402.     property OnDestroy: TNotifyEvent;
  403.   end;
  404.  
  405. { TScreen }
  406.  
  407.   PCursorRec = ^TCursorRec;
  408.   TCursorRec = record
  409.     Next: PCursorRec;
  410.     Index: Integer;
  411.     Handle: HCURSOR;
  412.   end;
  413.  
  414.   TScreen = class(TComponent)
  415.   public
  416.     constructor Create(AOwner: TComponent); override;
  417.     destructor Destroy; override;
  418.     property ActiveControl: TWinControl;
  419.     property ActiveCustomForm: TCustomForm;
  420.     property ActiveForm: TForm;
  421.     property CustomFormCount: Integer;
  422.     property CustomForms[Index: Integer]: TCustomForm;
  423.     property Cursor: TCursor;
  424.     property Cursors[Index: Integer]: HCURSOR;
  425.     property DataModules[Index: Integer]: TDataModule;
  426.     property DataModuleCount: Integer;
  427.     property IconFont: TFont;
  428.     property Fonts: TStrings;
  429.     property FormCount: Integer;
  430.     property Forms[Index: Integer]: TForm;
  431.     property Imes: TStrings;
  432.     property DefaultIme: string;
  433.     property DefaultKbLayout: HKL;
  434.     property Height: Integer;
  435.     property PixelsPerInch: Integer;
  436.     property Width: Integer;
  437.     property OnActiveControlChange: TNotifyEvent;
  438.     property OnActiveFormChange: TNotifyEvent;
  439.   end;
  440.  
  441. { TApplication }
  442.  
  443.   TTimerMode = (tmShow, tmHide);
  444.  
  445.   PHintInfo = ^THintInfo;
  446.   THintInfo = record
  447.     HintControl: TControl;
  448.     HintWindowClass: THintWindowClass;
  449.     HintPos: TPoint;
  450.     HintMaxWidth: Integer;
  451.     HintColor: TColor;
  452.     CursorRect: TRect;
  453.     CursorPos: TPoint;
  454.     ReshowTimeout: Integer;
  455.     HideTimeout: Integer;
  456.     HintStr: string;
  457.     HintData: Pointer;
  458.   end;
  459.  
  460.   TCMHintShow = record
  461.     Msg: Cardinal;
  462.     Reserved: Integer;
  463.     HintInfo: PHintInfo;
  464.     Result: Integer;
  465.   end;
  466.  
  467.   TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;
  468.   TExceptionEvent = procedure (Sender: TObject; E: Exception) of object;
  469.   TIdleEvent = procedure (Sender: TObject; var Done: Boolean) of object;
  470.   TShowHintEvent = procedure (var HintStr: string; var CanShow: Boolean;
  471.     var HintInfo: THintInfo) of object;
  472.   TWindowHook = function (var Message: TMessage): Boolean of object;
  473.  
  474.   TApplication = class(TComponent)
  475.   public
  476.     constructor Create(AOwner: TComponent); override;
  477.     destructor Destroy; override;
  478.     procedure BringToFront;
  479.     procedure ControlDestroyed(Control: TControl);
  480.     procedure CancelHint;
  481.     procedure CreateForm(InstanceClass: TComponentClass; var Reference);
  482.     procedure CreateHandle;
  483.     procedure HandleException(Sender: TObject);
  484.     procedure HandleMessage;
  485.     function HelpCommand(Command: Integer; Data: Longint): Boolean;
  486.     function HelpContext(Context: THelpContext): Boolean;
  487.     function HelpJump(const JumpID: string): Boolean;
  488.     procedure HideHint;
  489.     procedure HintMouseMessage(Control: TControl; var Message: TMessage);
  490.     procedure HookMainWindow(Hook: TWindowHook);
  491.     procedure Initialize;
  492.     function MessageBox(Text, Caption: PChar; Flags: Longint): Integer;
  493.     procedure Minimize;
  494.     procedure NormalizeAllTopMosts;
  495.     procedure NormalizeTopMosts;
  496.     procedure ProcessMessages;
  497.     procedure Restore;
  498.     procedure RestoreTopMosts;
  499.     procedure Run;
  500.     procedure ShowException(E: Exception);
  501.     procedure Terminate;
  502.     procedure UnhookMainWindow(Hook: TWindowHook);
  503.     property Active: Boolean;
  504.     property AllowTesting: Boolean;
  505.     property CurrentHelpFile: string;
  506.     property DialogHandle: HWnd;
  507.     property ExeName: string;
  508.     property Handle: HWnd;
  509.     property HelpFile: string;
  510.     property Hint: string;
  511.     property HintColor: TColor;
  512.     property HintPause: Integer;
  513.     property HintShortPause: Integer;
  514.     property HintHidePause: Integer;
  515.     property Icon: TIcon;
  516.     property MainForm: TForm;
  517.     property ShowHint: Boolean;
  518.     property ShowMainForm: Boolean;
  519.     property Terminated: Boolean;
  520.     property Title: string;
  521.     property UpdateFormatSettings: Boolean;
  522.     property UpdateMetricSettings: Boolean;
  523.     property OnActivate: TNotifyEvent;
  524.     property OnDeactivate: TNotifyEvent;
  525.     property OnException: TExceptionEvent;
  526.     property OnIdle: TIdleEvent;
  527.     property OnHelp: THelpEvent;
  528.     property OnHint: TNotifyEvent;
  529.     property OnMessage: TMessageEvent;
  530.     property OnMinimize: TNotifyEvent;
  531.     property OnRestore: TNotifyEvent;
  532.     property OnShowHint: TShowHintEvent;
  533.   end;
  534.  
  535. { Global objects }
  536.  
  537. var
  538.   Application: TApplication;
  539.   Screen: TScreen;
  540.   Ctl3DBtnWndProc: Pointer = nil;
  541.   Ctl3DDlgFramePaint: function(Window: HWnd; Msg, wParam, lParam: Longint): Longint stdcall = nil;
  542.   Ctl3DCtlColorEx: function(Window: HWnd; Msg, wParam, lParam: Longint): Longint stdcall = nil;
  543.   HintWindowClass: THintWindowClass = THintWindow;
  544.   GetDataModuleProviderNames: function(Component: TComponent): Variant;
  545.   UpdateDataModuleRegistry: procedure(Register: Boolean; const ClassID, ProgID: string);
  546.  
  547. function GetParentForm(Control: TControl): TCustomForm;
  548. function ValidParentForm(Control: TControl): TCustomForm;
  549.  
  550. function DisableTaskWindows(ActiveWindow: HWnd): Pointer;
  551. procedure EnableTaskWindows(WindowList: Pointer);
  552.  
  553. function MakeObjectInstance(Method: TWndMethod): Pointer;
  554. procedure FreeObjectInstance(ObjectInstance: Pointer);
  555.  
  556. function IsAccel(VK: Word; const Str: string): Boolean;
  557.  
  558. function  Subclass3DWnd(Wnd: HWnd): Boolean;
  559. procedure Subclass3DDlg(Wnd: HWnd; Flags: Word);
  560. procedure SetAutoSubClass(Enable: Boolean);
  561. function AllocateHWnd(Method: TWndMethod): HWND;
  562. procedure DeallocateHWnd(Wnd: HWND);
  563. procedure DoneCtl3D;
  564. procedure InitCtl3D;
  565.  
  566. function KeysToShiftState(Keys: Word): TShiftState;
  567. function KeyDataToShiftState(KeyData: Longint): TShiftState;
  568.  
  569. function ForegroundTask: Boolean;
  570.  
  571. implementation
  572.